import request from './request'

/**
 * 用户登录
 * @param {Object} loginData - 登录数据
 * @param {string} loginData.username - 用户名
 * @param {string} loginData.password - 密码
 * @returns {Promise}
 */
export const login = (loginData) => {
  return request.post('/user/login', loginData)
}

/**
 * 用户注册
 * @param {Object} registerData - 注册数据
 * @param {string} registerData.username - 用户名
 * @param {string} registerData.password - 密码
 * @returns {Promise}
 */
export const register = (registerData) => {
  return request.post('/user/register', registerData)
}

/**
 * 用户登出
 * @returns {Promise}
 */
export const logout = () => {
  return request.get('/user/logout')
}

/**
 * 通过ID获取用户信息
 * @param {number} id - 用户ID
 * @returns {Promise}
 */
export const getUserInfoById = (id) => {
  return request.get(`/user/${id}`)
}

/**
 * 根据昵称获取用户信息
 * @param {string} nickname - 用户昵称
 * @returns {Promise}
 */
export const getUserInfoByNickName = (nickname) => {
  return request.get(`/user/getUserInfoByNickName?nickname=${nickname}`)
}

/**
 * 更新用户信息
 * @param {Object} userInfo - 用户信息
 * @param {string} userInfo.nickname - 昵称
 * @param {string} userInfo.email - 邮箱
 * @param {string} [userInfo.gender] - 性别
 * @param {string} [userInfo.bio] - 简介
 * @param {string} [userInfo.birthday] - 生日
 * @returns {Promise}
 */
export const updateUserProfile = (userInfo) => {
  return request.put('/user/profile', userInfo)
}

/**
 * 修改密码
 * @param {Object} passwordData - 密码数据
 * @param {string} passwordData.username - 用户名
 * @param {string} passwordData.oldPassword - 旧密码
 * @param {string} passwordData.newPassword - 新密码
 * @returns {Promise}
 */
export const changePassword = (passwordData) => {
  return request.put('/user/changePassword', passwordData)
}

/**
 * 忘记密码
 * @param {Object} resetData - 重置密码数据
 * @param {string} resetData.username - 用户名
 * @param {string} resetData.newPassword - 新密码
 * @param {string} resetData.email - 邮箱
 * @returns {Promise}
 */
export const resetPassword = (resetData) => {
  return request.post('/user/resetPassword', resetData)
}

/**
 * 获取所有用户列表
 * @returns {Promise} 返回所有用户列表
 */
export const getAllUsers = () => {
  return request.get('/user/getAllUsers')
}

/**
 * 获取用户统计信息
 * @param {number} userId - 用户ID
 * @returns {Promise} 返回用户统计信息
 */
export const getUserStats = (userId) => {
  return request.get(`/follow/stats/${userId}`)
}

/**
 * 获取用户关注列表
 * @param {number} userId - 用户ID
 * @param {number} page - 页码
 * @param {number} size - 每页数量
 * @returns {Promise} 返回关注列表
 */
export const getFollowingList = (userId, page = 1, size = 20) => {
  return request.get(`/follow/following/${userId}?page=${page}&size=${size}`)
}

/**
 * 获取用户粉丝列表
 * @param {number} userId - 用户ID
 * @param {number} page - 页码
 * @param {number} size - 每页数量
 * @returns {Promise} 返回粉丝列表
 */
export const getFollowersList = (userId, page = 1, size = 20) => {
  return request.get(`/follow/followers/${userId}?page=${page}&size=${size}`)
}

/**
 * 检查是否已关注用户
 * @param {number} followingId - 被关注用户ID
 * @returns {Promise} 返回是否已关注
 */
export const checkFollowing = (followingId) => {
  return request.get(`/follow/check/${followingId}`)
}

/**
 * 关注用户
 * @param {number} followingId - 被关注用户ID
 * @returns {Promise} 返回关注结果
 */
export const followUser = (followingId) => {
  return request.post(`/follow/${followingId}`)
}

/**
 * 取消关注用户
 * @param {number} followingId - 被关注用户ID
 * @returns {Promise} 返回取消关注结果
 */
export const unfollowUser = (followingId) => {
  return request.delete(`/follow/${followingId}`)
}